﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

using Interface;  // bruger interface klassen som er blevet tilføjet i referancen i juleprojektet. Det med lagdelingen
using Controller; // det samme som interface. 

namespace JuleProjekt
{
    /// <summary>
    /// Interaction logic for AmtsStorkreds.xaml
    /// </summary>
    public partial class AmtsStorkreds : Window
    {
        //Navne giver valgmaskinecontroller klassen, så den kan tilgåes i denne klasse
        ValgmaskineController vcon;
        int okId, skId, aoId, vsId; // tilføjer nogen variabler

        public AmtsStorkreds(ValgmaskineController vcon) // laver en metode
        {
            InitializeComponent();

            this.vcon = vcon; // her referer this.vcon variablen oven over er lige med vcon efter equal tegnet

            lblNiveau.Content = "0";
            cmbIndhold.ItemsSource = null;
            cmbIndhold.ItemsSource = vcon.GetLandskreds();
            dgFordeling.ItemsSource = null;
            dgFordeling.ItemsSource = vcon.GetListe(okId, skId, aoId, vsId, lblNiveau.Content.ToString());
            UpdateGUI("Landskreds", vcon.GetStemmeBerettigede(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetOptalteStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetProcentStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()));
        }

        private void Tilbage(object sender, RoutedEventArgs e)
        {
            if (lblNiveau.Content == "0") // begynder if sætning, hvis label er lige med 0 skal den udføre statementet nedunder
            {
                MainWindow main = new MainWindow(); // giver mainwindow et navn
                main.Show(); // viser mainwindowet
                this.Close(); // lukker nuværende vindue
            }
            else if (lblNiveau.Content == "1") // her er det samme som ovenover, men bare hvis label er 1 osv.. 
            {
                lblNiveau.Content = "0";
                cmbIndhold.ItemsSource = null;
                cmbIndhold.ItemsSource = vcon.GetLandskreds();
                dgFordeling.ItemsSource = null;
                dgFordeling.ItemsSource = vcon.GetListe(okId, skId, aoId, vsId, lblNiveau.Content.ToString());
                UpdateGUI("Landskreds", vcon.GetStemmeBerettigede(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetOptalteStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetProcentStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString())); // UpdateGui metoden fra nedenunder
            }
            else if (lblNiveau.Content == "2")
            {
                lblNiveau.Content = "1";
                cmbIndhold.ItemsSource = null;
                cmbIndhold.ItemsSource = vcon.GetOpstillingskreds(okId);
                dgFordeling.ItemsSource = null;
                dgFordeling.ItemsSource = vcon.GetListe(okId, skId, aoId, vsId, lblNiveau.Content.ToString());
                UpdateGUI(okId.ToString(), vcon.GetStemmeBerettigede(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetOptalteStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetProcentStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()));
            }
            else if (lblNiveau.Content == "3")
            {

                lblNiveau.Content = "2";
                cmbIndhold.ItemsSource = null;
                cmbIndhold.ItemsSource = vcon.GetStorkreds(okId, skId);
                dgFordeling.ItemsSource = null;
                dgFordeling.ItemsSource = vcon.GetListe(okId, skId, aoId, vsId, lblNiveau.Content.ToString());
                UpdateGUI(skId.ToString(), vcon.GetStemmeBerettigede(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetOptalteStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetProcentStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()));
            }
            else if (lblNiveau.Content == "4")
            {
                cmbIndhold.IsEnabled = true;
                lblNiveau.Content = "3";
                cmbIndhold.ItemsSource = null;
                cmbIndhold.ItemsSource = vcon.GetAfstemningsområde(okId, skId, aoId);
                dgFordeling.ItemsSource = null;
                dgFordeling.ItemsSource = vcon.GetListe(okId, skId, aoId, vsId, lblNiveau.Content.ToString());
                UpdateGUI(aoId.ToString(), vcon.GetStemmeBerettigede(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetOptalteStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetProcentStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()));
            }
        }

        private void cmbIndhold_SelectionChanged(object sender, SelectionChangedEventArgs e) //hvad der sker når de forskellige bliver valgt i combobox'en 
        {
            if (cmbIndhold.SelectedIndex != -1)
            {                
                if (lblNiveau.Content == "0")
                {
                    if (int.TryParse(cmbIndhold.SelectedValue.ToString(), out okId))
                    {
                        lblNiveau.Content = "1";
                        cmbIndhold.ItemsSource = null;
                        cmbIndhold.ItemsSource = vcon.GetOpstillingskreds(okId);
                        dgFordeling.ItemsSource = null;
                        dgFordeling.ItemsSource = vcon.GetListe(okId, skId, aoId, vsId, lblNiveau.Content.ToString());
                        UpdateGUI(okId.ToString(), vcon.GetStemmeBerettigede(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetOptalteStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetProcentStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()));
                    }
                }
                else if (lblNiveau.Content == "1")
                {
                    if (int.TryParse(cmbIndhold.SelectedValue.ToString(), out skId))
                    {
                        lblNiveau.Content = "2";
                        cmbIndhold.ItemsSource = null;
                        cmbIndhold.ItemsSource = vcon.GetStorkreds(okId, skId);
                        dgFordeling.ItemsSource = null;
                        dgFordeling.ItemsSource = vcon.GetListe(okId, skId, aoId, vsId, lblNiveau.Content.ToString());
                        UpdateGUI(skId.ToString(), vcon.GetStemmeBerettigede(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetOptalteStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetProcentStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()));
                    }
                }
                else if (lblNiveau.Content == "2")
                {
                    if (int.TryParse(cmbIndhold.SelectedValue.ToString(), out aoId))
                    {
                        lblNiveau.Content = "3";
                        cmbIndhold.ItemsSource = null;
                        cmbIndhold.ItemsSource = vcon.GetAfstemningsområde(okId, skId, aoId);
                        dgFordeling.ItemsSource = null;
                        dgFordeling.ItemsSource = vcon.GetListe(okId, skId, aoId, vsId, lblNiveau.Content.ToString());
                        UpdateGUI(aoId.ToString(), vcon.GetStemmeBerettigede(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetOptalteStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetProcentStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()));
                    }
                }
                else if (lblNiveau.Content == "3")
                {
                    if (int.TryParse(cmbIndhold.SelectedValue.ToString(), out vsId))
                    {
                        lblNiveau.Content = "4";
                        cmbIndhold.IsEnabled = false;
                        dgFordeling.ItemsSource = null;
                        dgFordeling.ItemsSource = vcon.GetListe(okId, skId, aoId, vsId, lblNiveau.Content.ToString());
                        UpdateGUI(vsId.ToString(), vcon.GetStemmeBerettigede(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetOptalteStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()),
                            vcon.GetProcentStemmer(okId, skId, aoId, vsId, lblNiveau.Content.ToString()));
                    }
                }
            }
        }

        private void UpdateGUI(string overskrift, int stemmeBerettigede, int optalteStemmer, decimal procent) // updater overskriften/Label'en
        {
            lblOverskrift.Content = overskrift;
            lblBerettigede.Content = stemmeBerettigede;
            lblProcent.Content = procent;
            lblOptalt.Content = optalteStemmer;
        }
    }
}